import java.util.ArrayList;
import java.util.List;

public class Code1656 {
    /**
     *     OrderedStream os= new OrderedStream(5);
     * os.insert(3, "ccccc"); // 插入 (3, "ccccc")，返回 []
     * os.insert(1, "aaaaa"); // 插入 (1, "aaaaa")，返回 ["aaaaa"]
     * os.insert(2, "bbbbb"); // 插入 (2, "bbbbb")，返回 ["bbbbb", "ccccc"]
     * os.insert(5, "eeeee"); // 插入 (5, "eeeee")，返回 []
     * os.insert(4, "ddddd"); // 插入 (4, "ddddd")，返回 ["ddddd", "eeeee"]
     *
     *     来源：力扣（LeetCode）
     *     链接：https://leetcode.cn/problems/design-an-ordered-stream
     *     著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     * @param args
     */
    public static void main(String[] args) {
        OrderedStream os= new OrderedStream(5);
        os.insert(3, "ccccc"); // 插入 (3, "ccccc")，返回 []
        os.insert(1, "aaaaa"); // 插入 (1, "aaaaa")，返回 ["aaaaa"]
        os.insert(2, "bbbbb"); // 插入 (2, "bbbbb")，返回 ["bbbbb", "ccccc"]
        os.insert(5, "eeeee"); // 插入 (5, "eeeee")，返回 []
        os.insert(4, "ddddd"); // 插入 (4, "ddddd")
    }
}
class OrderedStream {

    String[] array = null;
    int index  = 0;
    public OrderedStream(int n) {
        array = new String[n];
    }

    public List<String> insert(int idKey, String value) {
        array[idKey-1] = value;
        List<String> list = new ArrayList<String>();
        if (value!=null){
            for (int i = index;i<array.length;i++){
                String item = array[i];
                if (item!=null){
                    list.add(item);
                }else {
                    break;
                }
                index++;
        }}

        System.out.println("返回 "+list);
        return list;
    }
}